const CompressionPlugin = require('compression-webpack-plugin')
// const webpack = require('webpack')
const path = require('path')

function resolve(dir) {
    return path.join(__dirname, dir)
}

module.exports = {
    publicPath: './',
    // publicPath: '/',
    // 生产环境是否生成 sourceMap 文件
    productionSourceMap: false,
    transpileDependencies: ['webpack-dev-server/client'],
    chainWebpack: (config) => {
        // 移除 prefetch 插件
        config.plugins.delete('prefetch'),
            config.resolve.alias.set('@', resolve('src'))
        // config.entry.app = ['babel-polyfill', './src/main.js'];

    },
    configureWebpack: (config) => {
        if (process.env.NODE_ENV === 'production') {
            config.optimization.minimizer[0].options.terserOptions.compress.drop_console = true
            return {
                plugins: [
                    new CompressionPlugin({
                        test: /\.js$|\.html$|\.css/, //匹配文件名
                        threshold: 10240, //对超过10K的数据进行压缩
                        deleteOriginalAssets: false, //是否删除原文件
                    }),
                ]
            }
        }
    },
    // 性能
    // chainWebpack: config => {
    //   config.plugin('webpack-bundle-analyzer')
    //     .use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin)

    //   config.plugin('ignore')
    //     .use(new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/));//忽略/moment/locale下的所有文件
    // },
    // css相关配置
    pluginOptions: {
        // 'style-resources-loader': {
        //   // scss配置
        //   preProcessor: 'scss',
        //   patterns: [
        //     path.resolve(__dirname, './src/assets/styles/*.scss'), //你的.scss文件所在目录
        //   ],
        // },
    },
    devServer: {
        host: 'http://localhost', // 设置主机地址
        port: 8080,
        https: false,
        open: true,
        // proxy: {
        //     // 设置代理
        //     '/api': {
        //         target: 'https://192.168.10.115', //测试环境
        //         changeOrigin: true,
        //         ws: true,
        //         logLevel: 'debug',
        //         pathRewrite: {
        //             '^/api': '/api',
        //         },
        //     },
        // },
    },
    transpileDependencies: ['/@yabby-business/']

}

//当你遇到1px的边框时，通常容易发现页面缺失部分边框，这时你可以使用/*no*/语法来屏蔽该属性转换，例如：
//border: 1px solid red; /*no*/ //由于字体的特殊性，我们在编译font-size属性时，通常不使用rem单位，这时候你可以这样使用：
//font-size: 24px; /*px*/
//直接写px，编译后会直接转化成rem ---- 除开下面两种情况，其他长度用这个
//在px后面添加;/*no*/，不会转化px，会原样输出。 --- 一般border需用这个
//在px后面添加;/*px*/, 会根据dpr的不同，生成三套代码。----一般字体需用这个